Deprecation, bugfixes and more! | This Week in Rails
ActionViewに関する変更です
キーワード引数 model: のデフォルト値は nil でした
このデフォルト値が最近 false に変更されていました
modelがnilの際、場合によっては ActionController::ParameterMissing や ActionController::RoutingError が発生することがあるためです
そこで当時のプルリクエストではmodelがnilの場合に ArgumentError を発生させるようにしています
今回のプルリクエストでは ArgumentError ではなく、非推奨であることを伝える警告メッセージを出すように変更してます
ArgumentError を発生させることは破壊的な変更に当たります
意図的にmodelにnilを渡す実装がされているアプリケーションもあるかもしれないからですね
v7.2 の段階では非推奨の警告を出力しておき、v7.3以降で ArgumentError にする、ということです
railtiesに関する変更です
APIモードでrails newをしたとき、CSSファイルをつくらないようになりました
ActiveRecordに関する変更です
これはActiveRecordがさまざまなデータベースシステムをサポートするための抽象化クラスです
クエリの実行やトランザクションの開始・終了など、データベースとのやりとりに関する情報をログに記録するために呼び出されます
今回のプルリクエストでは、このメソッドの出力に「クエリで取得したレコードの件数」の情報を追加しています
クエリで取得したレコードの件数をAPMツールで確認できるようになったら便利そうですね
ActiveRecordに関する変更です
たとえばActiveRecordを継承したモデルのフィールドを暗号化および復号化する際に使えます
code:rb
class User
encrypts :name, encryptor: ActiveRecord::Encryption::Encryptor.new
end
今回のプルリクエストではこのクラスで暗号化する際に、圧縮するかどうかをオプションで指定できるようになりました
code:rb
class User
encrypts :name, encryptor: ActiveRecord::Encryption::Encryptor.new(compress: false)
end
圧縮を回避したいケースとして次の2点が挙げられています
すでに圧縮済みのケース
暗号化された値のエントロピーに関する情報が漏れないようにしたいケース
参考: